# -*- mode: snippet; coding: utf-8 -*-
# name: define a class
# key: class
# --
class ${1:ClassName}(${2:object}):
    """$3
    """
    def __init__(self, $4):
        ${4:$(let* ((indent
                (concat "\n" (make-string (current-column) 32)))
               (args
                (mapconcat
                 '(lambda (x)
                    (if (not (string= (nth 0 x) ""))
                        (concat "@arg " (char-to-string 96) (nth 0 x)
                                (char-to-string 96) ":")))
                 (mapcar
                  '(lambda (x)
                     (mapcar
                      (lambda (x)
                        (replace-regexp-in-string "[[:blank:]]*$" ""
                         (replace-regexp-in-string "^[[:blank:]]*" "" x))) x))
                  (mapcar '(lambda (x) (split-string x "="))
                          (split-string text ",")))
                 indent)))
          (unless (string= args "")
            (mapconcat
             'identity
             (list (make-string 3 34) args (make-string 3 34) "")
             indent)))
        }${4:$(mapconcat
         '(lambda (x)
            (if (not (string= (nth 0 x) ""))
                (concat "self." (nth 0 x) " = " (nth 0 x))))
         (mapcar
          '(lambda (x)
             (mapcar
              '(lambda (x)
                 (replace-regexp-in-string "[[:blank:]]*$" ""
                  (replace-regexp-in-string "^[[:blank:]]*" "" x)))
              x))
          (mapcar '(lambda (x) (split-string x "="))
                  (split-string text ",")))
         (concat "\n" (make-string (current-column) 32)))
        }$0
